package com.starmark.gateway.auth.security.service;

/**
 * 获取JWT的TOKEN服务
 *
 * @author starmark
 * @date 20-1-23  下午10:03
 */
public interface IJwtTokenService {

    /**
     * 获取JWT的TOKEN服务
     *
     * @param userInfo   用户信息
     * @param salt       加密盐
     * @param expireTime 超时时间
     * @return JWTToken
     */
    String createJwtToken(String userInfo, String salt, long expireTime);


    /**
     * 获取JWT的TOKEN服务
     *
     * @param token          JWTToken
     * @param projectCode 工程编码
     * @return JWTToken
     */
    String createJwtToken(String  token, String projectCode);

    /**
     * 通过token返回用户数据
     *
     * @param jwtToken JWTToken
     * @return 用户数据
     */
    String getUserInfoByJwtToken(String jwtToken);

    /**
     * 判断是否过期
     *
     * @param token JWTToken
     * @return true/false
     */
    boolean isTokenExpired(String token);


    /**
     * 判断是否需要刷新TOKEN
     *
     * @param token          JWTToken
     * @param projectCode 工程编码
     * @return 是否需要刷新TOKEN
     */
    boolean shouldTokenRefresh(String  token, String projectCode);


}
